<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<title>Creating the Enterprise Bean - The Java EE 5 Tutorial</title>
<meta name="robots" content="index,follow">
<meta name="robots" content="index,follow">
<meta name="date" content="2008-10-01">
<link rel="stylesheet" type="text/css" href="css/default.css">
<link rel="stylesheet" type="text/css" href="css/ipg.css">
<link rel="stylesheet" type="text/css" href="css/j5eetutorial.css">
</head>

<body>

<table border="0" cellpadding="5" cellspacing="0" width="100%">
<tbody>
   <tr valign="top">
      <td><p class="toc level1"><a href="docinfo.html">Document Information</a></p>
<p class="toc level1 tocsp"><a href="gexaf.html">Preface</a></p>
<p class="toc level1 tocsp"><a href="gfirp.html">Part&nbsp;I&nbsp;Introduction</a></p>
<p class="toc level2"><a href="bnaaw.html">1.&nbsp;&nbsp;Overview</a></p>
<p class="toc level2"><a href="gfiud.html">2.&nbsp;&nbsp;Using the Tutorial Examples</a></p>
<p class="toc level1 tocsp"><a href="bnadp.html">Part&nbsp;II&nbsp;The Web Tier</a></p>
<p class="toc level2"><a href="bnadr.html">3.&nbsp;&nbsp;Getting Started with Web Applications</a></p>
<p class="toc level2"><a href="bnafd.html">4.&nbsp;&nbsp;Java Servlet Technology</a></p>
<p class="toc level2"><a href="bnagx.html">5.&nbsp;&nbsp;JavaServer Pages Technology</a></p>
<p class="toc level2"><a href="bnajo.html">6.&nbsp;&nbsp;JavaServer Pages Documents</a></p>
<p class="toc level2"><a href="bnakc.html">7.&nbsp;&nbsp;JavaServer Pages Standard Tag Library</a></p>
<p class="toc level2"><a href="bnalj.html">8.&nbsp;&nbsp;Custom Tags in JSP Pages</a></p>
<p class="toc level2"><a href="bnaon.html">9.&nbsp;&nbsp;Scripting in JSP Pages</a></p>
<p class="toc level2"><a href="bnaph.html">10.&nbsp;&nbsp;JavaServer Faces Technology</a></p>
<p class="toc level2"><a href="bnaqz.html">11.&nbsp;&nbsp;Using JavaServer Faces Technology in JSP Pages</a></p>
<p class="toc level2"><a href="bnatx.html">12.&nbsp;&nbsp;Developing with JavaServer Faces Technology</a></p>
<p class="toc level2"><a href="bnavg.html">13.&nbsp;&nbsp;Creating Custom UI Components</a></p>
<p class="toc level2"><a href="bnawo.html">14.&nbsp;&nbsp;Configuring JavaServer Faces Applications</a></p>
<p class="toc level2"><a href="bnaxu.html">15.&nbsp;&nbsp;Internationalizing and Localizing Web Applications</a></p>
<p class="toc level1 tocsp"><a href="bnayk.html">Part&nbsp;III&nbsp;Web Services</a></p>
<p class="toc level2"><a href="bnayl.html">16.&nbsp;&nbsp;Building Web Services with JAX-WS</a></p>
<p class="toc level2"><a href="bnazf.html">17.&nbsp;&nbsp;Binding between XML Schema and Java Classes</a></p>
<p class="toc level2"><a href="bnbdv.html">18.&nbsp;&nbsp;Streaming API for XML</a></p>
<p class="toc level2"><a href="bnbhf.html">19.&nbsp;&nbsp;SOAP with Attachments API for Java</a></p>
<p class="toc level1 tocsp"><a href="bnblr.html">Part&nbsp;IV&nbsp;Enterprise Beans</a></p>
<p class="toc level2"><a href="bnbls.html">20.&nbsp;&nbsp;Enterprise Beans</a></p>
<p class="toc level2"><a href="bnbnb.html">21.&nbsp;&nbsp;Getting Started with Enterprise Beans</a></p>
<div class="onpage">
<p class="toc level3"><a href="">Creating the Enterprise Bean</a></p>
<p class="toc level4"><a href="#bnbnd">Coding the Enterprise Bean</a></p>
<p class="toc level5"><a href="#bnbne">Coding the Business Interface</a></p>
<p class="toc level5"><a href="#bnbnf">Coding the Enterprise Bean Class</a></p>
<p class="toc level4 tocsp"><a href="#bnbng">Compiling and Packaging the <tt>converter</tt> Example</a></p>
<p class="toc level5"><a href="#bnbnh">Compiling and Packaging the <tt>converter</tt> Example in NetBeans IDE</a></p>
<p class="toc level5"><a href="#bnbni">Compiling and Packaging the <tt>converter</tt> Example Using Ant</a></p>
</div>
<p class="toc level3 tocsp"><a href="bnbnj.html">Creating the <tt>converter</tt> Application Client</a></p>
<p class="toc level4"><a href="bnbnj.html#bnbnk">Coding the <tt>converter</tt> Application Client</a></p>
<p class="toc level5"><a href="bnbnj.html#bnbnl">Creating a Reference to an Enterprise Bean Instance</a></p>
<p class="toc level5"><a href="bnbnj.html#bnbnm">Invoking a Business Method</a></p>
<p class="toc level5"><a href="bnbnj.html#bnbnn"><tt>ConverterClient</tt> Source Code</a></p>
<p class="toc level4 tocsp"><a href="bnbnj.html#bnbno">Compiling the <tt>converter</tt> Application Client</a></p>
<p class="toc level3 tocsp"><a href="bnbnp.html">Creating the <tt>converter</tt> Web Client</a></p>
<p class="toc level4"><a href="bnbnp.html#bnbnq">Coding the <tt>converter</tt> Web Client</a></p>
<p class="toc level4"><a href="bnbnp.html#bnbnr">Compiling the <tt>converter</tt> Web Client</a></p>
<p class="toc level3 tocsp"><a href="bnbns.html">Deploying the <tt>converter</tt> Java EE Application</a></p>
<p class="toc level4"><a href="bnbns.html#bnbnt">Deploying the <tt>converter</tt> Example Using NetBeans IDE</a></p>
<p class="toc level4"><a href="bnbns.html#bnbnu">Deploying the <tt>converter</tt> Example Using Ant</a></p>
<p class="toc level3 tocsp"><a href="bnbnv.html">Running the <tt>converter</tt> Application Client</a></p>
<p class="toc level4"><a href="bnbnv.html#bnbnw">Running the <tt>converter</tt> Application Client Using NetBeans IDE</a></p>
<p class="toc level4"><a href="bnbnv.html#bnbnx">Running the <tt>converter</tt> Application Client Using Ant</a></p>
<p class="toc level3 tocsp"><a href="bnbny.html">Running the <tt>converter</tt> Web Client</a></p>
<p class="toc level3"><a href="bnboa.html">Modifying the Java EE Application</a></p>
<p class="toc level4"><a href="bnboa.html#bnbob">Modifying a Class File</a></p>
<p class="toc level2 tocsp"><a href="bnboc.html">22.&nbsp;&nbsp;Session Bean Examples</a></p>
<p class="toc level2"><a href="bnbpk.html">23.&nbsp;&nbsp;A Message-Driven Bean Example</a></p>
<p class="toc level1 tocsp"><a href="bnbpy.html">Part&nbsp;V&nbsp;Persistence</a></p>
<p class="toc level2"><a href="bnbpz.html">24.&nbsp;&nbsp;Introduction to the Java Persistence API</a></p>
<p class="toc level2"><a href="bnbrl.html">25.&nbsp;&nbsp;Persistence in the Web Tier</a></p>
<p class="toc level2"><a href="bnbrs.html">26.&nbsp;&nbsp;Persistence in the EJB Tier</a></p>
<p class="toc level2"><a href="bnbtg.html">27.&nbsp;&nbsp;The Java Persistence Query Language</a></p>
<p class="toc level1 tocsp"><a href="bnbwi.html">Part&nbsp;VI&nbsp;Services</a></p>
<p class="toc level2"><a href="bnbwj.html">28.&nbsp;&nbsp;Introduction to Security in the Java EE Platform</a></p>
<p class="toc level2"><a href="bnbyk.html">29.&nbsp;&nbsp;Securing Java EE Applications</a></p>
<p class="toc level2"><a href="bncas.html">30.&nbsp;&nbsp;Securing Web Applications</a></p>
<p class="toc level2"><a href="bncdq.html">31.&nbsp;&nbsp;The Java Message Service API</a></p>
<p class="toc level2"><a href="bncgv.html">32.&nbsp;&nbsp;Java EE Examples Using the JMS API</a></p>
<p class="toc level2"><a href="bncih.html">33.&nbsp;&nbsp;Transactions</a></p>
<p class="toc level2"><a href="bncjh.html">34.&nbsp;&nbsp;Resource Connections</a></p>
<p class="toc level2"><a href="bncjx.html">35.&nbsp;&nbsp;Connector Architecture</a></p>
<p class="toc level1 tocsp"><a href="bnckn.html">Part&nbsp;VII&nbsp;Case Studies</a></p>
<p class="toc level2"><a href="bncko.html">36.&nbsp;&nbsp;The Coffee Break Application</a></p>
<p class="toc level2"><a href="bnclz.html">37.&nbsp;&nbsp;The Duke's Bank Application</a></p>
<p class="toc level1 tocsp"><a href="gexbq.html">Part&nbsp;VIII&nbsp;Appendixes</a></p>
<p class="toc level2"><a href="bncno.html">A.&nbsp;&nbsp;Java Encoding Schemes</a></p>
<p class="toc level2"><a href="bncnq.html">B.&nbsp;&nbsp;Preparation for Java EE Certification Exams</a></p>
<p class="toc level2"><a href="bncnt.html">C.&nbsp;&nbsp;About the Authors</a></p>
<p class="toc level1 tocsp"><a href="idx-1.html">Index</a></p>
</td>
      <td width="10px">&nbsp;</td>
      <td width="705px">
         <div class="header">
             <div class="header-links-top">
                 <a href="http://java.sun.com">java.sun.com</a> |
                 <a href="http://docs.sun.com/">docs.sun.com</a><br>
             </div> 
             <img src="graphics/tutorialBanner.gif" width="704" height="120" alt="The Java&trade; EE 5 Tutorial"/>
             <div class="header-links">
	         <a href="index.html">Home</a> |
                 <a href="http://java.sun.com/javaee/5/docs/tutorial/information/download.html">Download</a> |
                 <a href="http://java.sun.com/javaee/5/docs/tutorial/doc/JavaEETutorial.pdf">PDF</a> |
                 <a href="http://java.sun.com/javaee/5/docs/api/index.html">API</a> |
                 <a href="http://java.sun.com/javaee/5/docs/tutorial/information/faq.html">FAQ</a> |
                 <a href="http://java.sun.com/javaee/5/docs/tutorial/information/search.html">Search</a> |
                 <a href="http://java.sun.com/javaee/5/docs/tutorial/information/sendusmail.html">Feedback</a> |
                 <a href="http://java.sun.com/javaee/5/docs/tutorial/information/history.html">History</a>
             </div>
             <div class="navigation">
                 <a href="bnbnb.html"><img style="padding-right: 3px" src="graphics/leftButton.gif" border="0"></a>
                 <a href="sjsaseej2eet.html"><img style="padding-right: 3px" src="graphics/upButton.gif" border="0"></a>
                 <a href="bnbnj.html"><img style="padding-left: 3px" src="graphics/rightButton.gif" border="0"></a>
             </div>
         </div>

	 <div class="maincontent">      	 
             

<a name="bnbnc"></a><h3>Creating the Enterprise Bean</h3>
<p>The enterprise bean in our example is a stateless session bean called
<tt>ConverterBean</tt>. The source code for <tt>ConverterBean</tt> is in the <tt></tt><i>tut-install</i><tt>/javaeetutorial5/examples/ejb/converter/converter-ejb/src/java/</tt> directory.</p><p>Creating <tt>ConverterBean</tt> requires these steps:</p>
<ol><li><p>Coding the bean&rsquo;s business interface and class (the source code is provided)</p></li>
<li><p>Compiling the source code with the Ant tool</p></li></ol>


<a name="bnbnd"></a><h4>Coding the Enterprise Bean</h4>
<p>The enterprise bean in this example needs the following code:</p>
<ul><li><p>Remote business interface</p></li>
<li><p>Enterprise bean class</p></li></ul>


<a name="bnbne"></a><h5>Coding the Business Interface</h5>
<p><a name="indexterm-2064"></a><a name="indexterm-2065"></a><a name="indexterm-2066"></a>The <b>business interface</b> defines the business methods that a client can call. The business
methods are implemented in the enterprise bean class. The source code for the
<tt>Converter</tt> remote business interface follows.</p><pre>package com.sun.tutorial.javaee.ejb;

import java.math.BigDecimal;
import javax.ejb.Remote;

@Remote
public interface Converter {
    public BigDecimal dollarToYen(BigDecimal dollars);
    public BigDecimal yenToEuro(BigDecimal yen);
}</pre><p>Note the <tt>@Remote</tt> annotation decorating the interface definition. This lets the container know
that <tt>ConverterBean</tt> will be accessed by remote clients.</p>

<a name="bnbnf"></a><h5>Coding the Enterprise Bean Class</h5>
<p><a name="indexterm-2067"></a><a name="indexterm-2068"></a><a name="indexterm-2069"></a>The enterprise bean class for this example is called <tt>ConverterBean</tt>. This class implements the
two business methods (<tt>dollarToYen</tt> and <tt>yenToEuro</tt>) that the <tt>Converter</tt> remote business interface defines.
The source code for the <tt>ConverterBean</tt> class follows.</p><pre>package com.sun.tutorial.javaee.ejb;

import java.math.BigDecimal;
import javax.ejb.*;

@Stateless
public class ConverterBean implements Converter {
    private BigDecimal yenRate = new BigDecimal("115.3100");
    private BigDecimal euroRate = new BigDecimal("0.0071");

    public BigDecimal dollarToYen(BigDecimal dollars) {
        BigDecimal result = dollars.multiply(yenRate);
        return result.setScale(2, BigDecimal.ROUND_UP);
    }

    public BigDecimal yenToEuro(BigDecimal yen) {
        BigDecimal result = yen.multiply(euroRate);
        return result.setScale(2, BigDecimal.ROUND_UP);
    }
}</pre><p>Note the <tt>@Stateless</tt> annotation decorating the enterprise bean class. This lets the container
know that <tt>ConverterBean</tt> is a stateless session bean.</p>

<a name="bnbng"></a><h4>Compiling and Packaging the <tt>converter</tt> Example</h4>
<a name="indexterm-2070"></a><a name="indexterm-2071"></a><p>Now you are ready to compile the remote business interface (<tt>Converter.java</tt>) and
the enterprise bean class (<tt>ConverterBean.java</tt>), and package the compiled classes into an enterprise
bean JAR.</p>

<a name="bnbnh"></a><h5>Compiling and Packaging the <tt>converter</tt> Example in NetBeans IDE</h5>
<p>Follow these instructions to build and package the <tt>converter</tt> example in NetBeans IDE.</p>
<ol><li><p>In NetBeans IDE, select File&rarr;Open Project.</p></li>
<li><p>In the Open Project dialog, navigate to <tt></tt><i>tut-install</i><tt>/javaeetutorial5/examples/ejb/</tt>.</p></li>
<li><p>Select the <tt>converter</tt> folder.</p></li>
<li><p>Select the Open as Main Project and Open Required Projects check boxes.</p></li>
<li><p>Click Open Project.</p></li>
<li><p>In the Projects tab, right-click the <tt>converter</tt> project and select Build. You will see the output in the Output tab.</p></li></ol>


<a name="bnbni"></a><h5>Compiling and Packaging the <tt>converter</tt> Example Using Ant</h5>
<p>To compile and package <tt>converter</tt> using Ant, do the following:</p>
<ol><li><p>In a terminal window, go to this directory:</p><pre><i>tut-install</i>/javaeetutorial5/examples/ejb/converter/</pre></li>
<li><p>Type the following command:</p><pre><tt><b>ant</b></tt></pre></li></ol>
<p>This command calls the <tt>default</tt> task, which compiles the source files for the
enterprise bean and the application client, placing the class files in the <tt>build</tt>
subdirectories (not the <tt>src</tt> directory) of each submodule. Then the default task
packages each submodule into the appropriate package file: <tt>converter-app-client.jar</tt> for the application client,
<tt>converter-ejb.jar</tt> for the enterprise bean JAR, and <tt>converter-war.war</tt> for the web client. The web
client in this example requires no compilation. For more information about the Ant
tool, see <a href="bnaan.html">Building the Examples</a>.</p>
<hr><p><b>Note - </b><a name="indexterm-2072"></a><a name="indexterm-2073"></a>When compiling the code, the preceding <tt>ant</tt> task includes the <tt>javaee.jar</tt> file
in the classpath. This file resides in the <tt>lib</tt> directory of your Application Server
installation. If you plan to use other tools to compile the source code
for Java EE components, make sure that the classpath includes the <tt>javaee.jar</tt> file.</p>
<hr>

         </div>
         <div class="navigation">
             <a href="bnbnb.html"><img style="padding-right: 3px" src="graphics/leftButton.gif" border="0"></a>
             <a href="sjsaseej2eet.html"><img style="padding-right: 3px" src="graphics/upButton.gif" border="0"></a>
             <a href="bnbnj.html"><img style="padding-left: 3px" src="graphics/rightButton.gif" border="0"></a>
         </div>

         <div class="copyright">
      	    <p>The material in The Java&trade; EE 5 Tutorial is <a href='docinfo.html'>copyright</a>-protected and may not be published in other works without express written permission from Sun Microsystems.</p>
      	 </div>

      </td>
   </tr>
</tbody>
</table>
</body>
</html>

